package com.thinkgem.jeesite.modules.sys.dao;

import com.thinkgem.jeesite.common.persistence.CrudDao;
import com.thinkgem.jeesite.common.persistence.annotation.MyBatisDao;
import com.thinkgem.jeesite.modules.sys.Jpush.report.UsersResult;
import com.thinkgem.jeesite.modules.sys.entity.TbOrder;
import com.thinkgem.jeesite.modules.sys.entity.TbOrderExample;
import com.thinkgem.jeesite.modules.sys.entity.TbOrderProduct;
import com.thinkgem.jeesite.modules.sys.entity.User;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Map;

@MyBatisDao
public interface TbOrderMapper extends CrudDao<TbOrder> {
    int countByExample(TbOrderExample example);

    int deleteByExample(TbOrderExample example);

    int deleteByPrimaryKey(Integer id);

    int insert(TbOrder record);

    void insertTbOrder(TbOrder tbOrder);

    int insertSelective(TbOrder record);

    List<TbOrder> selectByExampleWithBLOBs(TbOrderExample example);

    TbOrder selectByPrimaryKey(Integer id);

    TbOrder  selectByPrimaryId(Integer id);

    List<TbOrder> selectOrderListById(Map<String, Object> params);

    //代理商确认发货的同时要修改自己商品的库存
    int subStoreNum(TbOrderProduct tbOrderProduct);

    int updateByExampleSelective(@Param("record") TbOrder record, @Param("example") TbOrderExample example);

    int updateByExampleWithBLOBs(@Param("record") TbOrder record, @Param("example") TbOrderExample example);

    int updateByExample(@Param("record") TbOrder record, @Param("example") TbOrderExample example);

    int updateByPrimaryKeySelective(TbOrder record);

    int updateByPrimaryKeyWithBLOBs(TbOrder record);

    int updateByPrimaryKey(TbOrder record);

    List<TbOrderMapper> getOrderMapper();

    List findByPage(TbOrder tbOrder);

    List findReserveByPage(TbOrder tbOrder);

    List findUserReserveByPage(TbOrder tbOrder);

    void editGudenStuffState(Map map);

    void editOrderState(TbOrder order);

    void updateStatus(TbOrder order);

    List findOrderByPage(TbOrder tbOrder);

    List<TbOrder> findProByPage(TbOrder tbOrder);

    List<TbOrder> selectPreCancelOrder(@Param("productId") Integer productId);
    //查询订单的发货地址
    User overseaAddress(TbOrder tbOrder);
}